<template>
  <a-card
    class="j-address-list-right-card-box bgs"
    :loading="cardLoading"
    :bordered="false"
  >
    <div class="table-page-search-wrapper">
      <a-form-model layout="inline" :model="queryParam">
        <a-row :gutter="10">
          <a-col :md="8" :sm="12">
            <a-form-model-item
              label="姓名"
              prop="realname"
              style="margin-left: 8px"
            >
              <a-input
                placeholder="请输入姓名查询"
                v-model="queryParam.realname"
              ></a-input>
            </a-form-model-item>
          </a-col>

          <a-col :md="8" :sm="12">
            <a-form-model-item
              label="工号"
              prop="workNo"
              style="margin-left: 8px"
            >
              <a-input
                placeholder="请输入工号查询"
                v-model="queryParam.workNo"
              ></a-input>
            </a-form-model-item>
          </a-col>

          <span
            style="float: left; overflow: hidden"
            class="table-page-search-submitButtons"
          >
            <a-col :md="6" :sm="24">
              <a-button
                type="primary"
                @click="searchQuery"
                icon="search"
                style="margin-left: 18px"
                >查询</a-button
              >
              <a-button
                type="primary"
                @click="searchReset"
                icon="reload"
                style="margin-left: 8px"
                >重置</a-button
              >
            </a-col>
          </span>
        </a-row>
      </a-form-model>
    </div>

    <a-table
      class="tables right-bottom"
      ref="table"
      size="middle"
      bordered
      rowKey="userId"
      :pagination="ipagination"
      :columns="columns"
      :dataSource="dataSource"
      :loading="loading"
      @change="handleTableChange"
    >
    </a-table>
  </a-card>
</template>

<script>
import { getAction } from "@/api/manage";
import { JeecgListMixin } from "@/mixins/JeecgListMixin";

export default {
  name: "AddressListRight",
  mixins: [JeecgListMixin],
  components: {},
  props: ["value"],
  data() {
    return {
      description: "用户信息",
      cardLoading: true,
      positionInfo: {},
      columns: [
        {
          title: "#",
          key: "rowIndex",
          dataIndex: "",
          width: 60,
          align: "center",
          customRender: (t, r, i) => parseInt(i) + 1,
        },
        {
          title: "姓名",
          width: "15%",
          align: "center",
          dataIndex: "realname",
        },
        {
          title: "工号",
          width: "15%",
          align: "center",
          dataIndex: "workNo",
        },
        {
          title: "部门",
          width: "20%",
          align: "center",
          dataIndex: "departName",
        },
        {
          title: "职务",
          width: "15%",
          align: "center",
          dataIndex: "post",
          customRender: (text) =>
            (text || "")
              .split(",")
              .map((t) => (this.positionInfo[t] ? this.positionInfo[t] : t))
              .join(","),
        },
        {
          title: "手机",
          width: "15%",
          align: "center",
          dataIndex: "phone",
        },
        // {
        //   title: '手机号',
        //   width: '12%',
        //   align: 'center',
        //   dataIndex: 'phone'
        // },
        {
          title: "公司邮箱",
          width: "15%",
          align: "center",
          dataIndex: "email",
        },
      ],
      url: {
        list: "/sys/user/queryByOrgCodeForAddressList",
        listByPosition: "/sys/position/list",
      },
    };
  },
  watch: {
    value: {
      immediate: true,
      handler(orgCode) {
        this.dataSource = [];
        this.loadData(1, orgCode);
      },
    },
  },
  created() {
    this.queryPositionInfo();
  },
  methods: {
    loadData(pageNum, orgCode) {
      this.loading = true;
      if (pageNum === 1) {
        this.ipagination.current = 1;
      }
      // update-begin- --- author:wangshuai ------ date:20200102 ---- for:传过来的部门编码为空全查
      if (!orgCode) {
        getAction(this.url.list, {
          ...this.getQueryParams(),
        })
          .then((res) => {
            if (res.success) {
              this.dataSource = res.result.records;
              this.ipagination.total = res.result.total;
            }
          })
          .finally(() => {
            this.loading = false;
            this.cardLoading = false;
          });
        // update-end- --- author:wangshuai ------ date:20200102 ---- for:传过来的部门编码为空全查
      } else {
        //加载数据 若传入参数1则加载第一页的内容
        getAction(this.url.list, {
          orgCode,
          ...this.getQueryParams(),
        })
          .then((res) => {
            if (res.success) {
              this.dataSource = res.result.records;
              this.ipagination.total = res.result.total;
            }
          })
          .finally(() => {
            this.loading = false;
            this.cardLoading = false;
          });
      }
    },

    searchQuery() {
      this.loadData(1, this.value);
    },
    searchReset() {
      this.queryParam = {};
      this.loadData(1, this.value);
    },

    handleTableChange(pagination, filters, sorter) {
      if (Object.keys(sorter).length > 0) {
        this.isorter.column = sorter.field;
        this.isorter.order = "ascend" === sorter.order ? "asc" : "desc";
      }
      this.ipagination = pagination;
      this.loadData(null, this.value);
    },

    // 查询职务信息
    queryPositionInfo() {
      getAction(this.url.listByPosition, { pageSize: 99999 }).then((res) => {
        if (res.success) {
          let positionInfo = {};
          res.result.records.forEach((record) => {
            positionInfo[record["code"]] = record["name"];
          });
          this.positionInfo = positionInfo;
        }
      });
    },
  },
};
</script>
<style>
.j-address-list-right-card-box .ant-table-placeholder {
  min-height: 46px;
}
</style>
<style scoped>
.j-address-list-right-card-box {
  height: 100%;
  min-height: 300px;
}
</style>